# -*- coding: utf-8 -*- 
# @project : 《Atcoder》
# @Author : created by bensonrachel on 2021/9/14
# @File : 2.E - Knapsack 2.py
# https://atcoder.jp/contests/dp/tasks/dp_e
# 超大容量01背包 1≤W≤10**9 数组开不了那么大的。但是价值总量最多才十万 100000
"""
1≤N≤100
物品的总数为100
价值总量最多= 100*1000 = 100000
"""
import sys
MAX_INT = sys.maxsize

N,W = map(int ,input().split())
max_value = N*1000

dp_array = [MAX_INT]*(max_value+1) #要求最小容量，初始化为最大值
dp_array[0] = 0
ans = 0


for _ in range(N):
    w,v = map(int,input().split())
    for j in range(max_value,v-1,-1):
        dp_array[j] = min(dp_array[j],dp_array[j-v]+w)
        if(dp_array[j] <= W and j > ans):#在找的过程中直接判断是否可以更新答案
            ans = j #此处输出j，即为满足条件的最大价值,最大的j

print(ans)

"""
此时的dp[j]表示的是：价值为j时的最小容量为dp[i];

"""

"""
思路： 根据01背包的思想，满足在背包容量以内，用最小的容量，装价值最大的物品。但是此题 背包容量过大，而价值之和的最大值只有5000，
我们可以转换思路，利用01背包的思想，用最大价值来求最小容量；即为，把价值之和看作是背包的容量，进行背包。
=>求前i个物品中价值为j时最小的重量
这样最后找出dp[n]中重量小于背包总容量的最大的价值（j）就可以解决的这个问题。
"""